{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[![Dataflowr](https://raw.githubusercontent.com/dataflowr/website/master/_assets/dataflowr_logo.png)](https://dataflowr.github.io/website/)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "j5yGqm4Nl39f"
   },
   "source": [
    "Code adapted from [Optimization chapter](http://www.d2l.ai/chapter_optimization/) of Dive into Deep Learning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "4gJMsVnYl39r"
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline\n",
    "\n",
    "def show_trace_2d(f, res , color = 'red'):\n",
    "    \"\"\"Show the trace of 2d variables during optimization.\"\"\"\n",
    "    x1, x2 = zip(*res)\n",
    "    plt.plot(x1, x2, '-o', color=color)\n",
    "    x1 = np.arange(-5.5, 3.5, 0.1)\n",
    "    x2 = np.arange(min(-3.0, min(x2) - 1), max(1.0, max(x2) + 1), 0.1)\n",
    "    x1, x2 = np.meshgrid(x1, x2)\n",
    "    plt.contour(x1, x2, f(x1, x2), colors='blue')\n",
    "    plt.xlabel('x1')\n",
    "    plt.ylabel('x2')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "k2TDCgM3l399"
   },
   "outputs": [],
   "source": [
    "def train_2d(trainer):\n",
    "    \"\"\"Optimize the objective function of 2d variables with a customized trainer.\"\"\"\n",
    "    \"\"\"trainer(x1,x2,s_x1,s_x2) should return the updated positions x1, x2 and possible memory terms.\"\"\"\n",
    "    x1, x2 = -5, -2\n",
    "    s_x1, s_x2 = 0, 0\n",
    "    res = [(x1, x2)]\n",
    "    for i in range(20):\n",
    "        x1, x2, s_x1, s_x2 = trainer(x1, x2, s_x1, s_x2)\n",
    "        res.append((x1, x2))\n",
    "    print('epoch %d, x1 %f, x2 %f' % (i+1, x1, x2))\n",
    "    return res"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "KlFPt-C9l3-N"
   },
   "source": [
    "# Gradient descent\n",
    "\n",
    "[Video timestamp](https://youtu.be/UvM0hK4E2dc?t=589)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "UVnxAGegl3-R"
   },
   "outputs": [],
   "source": [
    "eta = 0.4\n",
    "\n",
    "def f_2d(x1, x2):\n",
    "    return 0.1 * x1 ** 2 + 2 * x2 ** 2\n",
    "\n",
    "def gd_2d(x1, x2, s1, s2):\n",
    "    return (x1 - eta * 0.2 * x1, x2 - eta * 4 * x2, 0, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 297
    },
    "colab_type": "code",
    "id": "npaYk5WUl3-e",
    "outputId": "f27bad51-3718-4da0-9421-7265248bdcd1"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.943467, x2 -0.000073\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_trace_2d(f_2d, train_2d(gd_2d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 297
    },
    "colab_type": "code",
    "id": "7VfX0pq7l3-q",
    "outputId": "daa4cfd0-d362-41f5-e9e6-77435225d801"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.387814, x2 -1673.365109\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 0.6\n",
    "show_trace_2d(f_2d, train_2d(gd_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "pcsKwAyRl3-y"
   },
   "source": [
    "# Momemtum\n",
    "\n",
    "[Video timestamp](https://youtu.be/UvM0hK4E2dc?t=734)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "8qnyJQwnl3-0"
   },
   "outputs": [],
   "source": [
    "eta, gamma = 0.4, 0.5\n",
    "\n",
    "def momentum_2d(x1, x2, v1, v2):\n",
    "    v1 = # your code\n",
    "    v2 = # your code\n",
    "    return x1 - v1, x2 - v2, v1, v2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 297
    },
    "colab_type": "code",
    "id": "pT8vz7dKl3-7",
    "outputId": "f11697ca-5287-4dd9-8068-71e457f4e815"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.062843, x2 0.001202\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEGCAYAAABsLkJ6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO2deXhdVbn/vyvznCZp0yFpmrZ0BlraMFukiAyKDAK23op6r1pF+Tl7FarXAStyuQjqFbVeUYQKolAFREGZZepES+cR2pzOg02bpkkzrN8f3y7XOjv7JCfJOWef4f08z/usffaZVnL2Xu+a3u+rtNYQBEEQMo+soCsgCIIgBIM4AEEQhAxFHIAgCEKGIg5AEAQhQxEHIAiCkKHkBF2BvjB48GBdX18fdDWEANAa6OwMt66uyI/NsVu6x9EwciRQXR3fv0voG5s3A0eO9P46pYCsLGvZ2bZ0j91z3udcS3WWL19+QGs9xHs+MAeglBoJ4DcAhgLQABZqrX/Y03vq6+uxbNmyRFRPiDFa88Y9dAj45z9phw4Bhw/bx4cPd7emJlpLS+/foRRQUgKUllorKbHnSkqA4mKae1xUFH5cWMhy6FCgrCz+/xshevbs4XXR0gIcPw4cO8bjY8estbQAzc08bm4Ot6NHrR05ws/oDaV4/QwaBJSXs/RaRYW/VVbyWgoapdR2v/NBjgA6AHxJa71CKVUKYLlS6m9a63UB1kmIgvZ24OBB4MCBcDPnDh5k425K0+h3dkb+zJwc3jDuTVVba286Y2VlLEtL7eOyMj4uKmLvTUhfhg2jxYqODusYjhyhNTV1P3Y7I01NQCgErFnD67qpiR2cSBQU0BG4VlVFGzzYlq4NGpSYazkwB6C13g1g98njo0qp9QBqAIgDSDAdHcD+/cC+fcDevSzNY1MeOMDj/ft5wUeipIQXtLnI6+rsY9MjMseuFRWxpyUIiSQnx3Y4+ktXF52EGcma0a059naItmwBXn+dj0+c8P/M7GzrGIYMsVZdbUtjw4ax/v25f5JiDUApVQ/gDACvB1uT9KKlBdi9m7Zrlz3es4dmjvfv9+/B5OSEX3wNDfbY9FTc3ktVFZCfn/i/UxCCJCvLOpHRo6N/n9acpjKj5v377Sh6//7wTteaNfZ5P/Ly7OjI2PDhtPHjI9chcAeglCoB8AiAz2utuy3vKKXmAZgHAHV1dQmuXXLS2cleeSgE7Nxpbdeu8GO/nnpurr046uuBc87h46FDaW7Por+9CkEQesesWZWU8F6Mho4OOoG9e+kQ9u6l7dljy7ffBl59lc8DwIUX9lCHILWAlFK5AJ4A8JTW+ge9vb6hoUGn+yJwVxd/xMZGWigUfhwKsefe0RH+vpwcNuojRgA1NSxHjLDnTG+gslLmyQUhE2hvp1M4cQIYO1Yt11o3eF8T5C4gBeCXANZH0/inCy0twI4dwPbttB077OMdO9h7b28Pf09hIRdER44EZs3icU2NLWtq2GOXhl0QBENuLtuInghyCuh8ADcAWK2UWnny3C1a6ycDrNOA6ehgb33bNmtvvWXNDMsM2dlswOvqgPPOYzlypC1HjuQiqUzFCIIQa4LcBfQPACnZrLW0sGHfsoW2dStt2zb25N3pmZwcYNQoYMwY4OqrOdc3ahStro7TMzmBr8QIgpCJSNMTgZYWNuqbNrGR37zZNvg7d4a/tqICGDuWu2Rmz+bxmDG0mpr0iCQUBCH9yGgH0NHBaZlNm7pbKBT+2upqYNw44OKLgVNOsTZ2LB2AIAhCqpERDuDYMWD9etq6dSw3bmQP311wragAJkzgQuu4cdw/O24cG3qRBBAEId1IKwfQ0sLGfe1aBk6sW8fjt9+2r8nNZYM+aRJw1VVs8MePZzl4cGBVFwRBSDgp6QA6OjhNs2YNsHo1yzVr2KM3YQ15eWzUzzkH+NjH2OBPmcIpm9zcYOsvCIKQDKSUA3jrLWDaNPbyjYZGdjanaaZNAz70IeDUU9nQn3KK7K4REkdnJ5UlW1u7W1sbr9e2NnvsWnu7LTs6bOk1P+lrI3Pd1cXOj9e8mO3ESllzZZNd+WRjOTm2NJaba0vX8vIoB5KXZ49dKyjwN9nmHAwp1UQ2NzOa9dJLgdNOo02YwAtIEHpDa04TGqVHowBp5IFd2WBXXthIDBvZYSNFbMrjx7sH7w0U0/jm5nZviP207d0G3Wvu329K14zzcHMmeM04IOOcYi0gUFDAgEcjxW1KI9HtSnYbOW/XjPy3UYY1qrF5ebGtZ7qRUg7gtNOAv/wl6FoIQdLWZiWmXcVFk0/Am1fAlfA9cqRnSWqXwsLuOQOKiiiEZ45Ng2XM9GbdY28P2PSO8/NtjzkvL7wXbRr1ZKari87Aa21ttvSOfIyZkZEZMRkn6pqr93/4cHeHHElF00t+vnUGfnr+RoLcq+FfWcnz6T6LkOZ/npDMtLSEKx/6mVdKt7fEMGVl4Td4XV14PgE3h4DpLZpkMeZY8gr0TlaWdWhB0N5uE764SV6OHqWzN6XR9G9qsh2CXbtsB6G3hDDl5eH6/X7a/Uay2SjiptIaozgAIWZozR64q0xo8guY0tj+/byB/cjKCr/hRo0CzjjD5hWIlFOgvFyC7jKF3NyB6/gDHJG4WelcLX+343HwIG3zZpY95cSoqAjX7XeVdocOteq7w4ZxdBkk4gCEXunsZAO+a1d4XgFvfoE9e/znwnNy7A0xdCgX7c1j1xKdDUkQ8vNtA90XTpygY/Bq95vOjTlevx544YXIOv4lJf4a/kbF11i89MDEAWQ4XV28UHfsoIidKY0MtZGf9s6dK8VG21y0U6aE92zMcXU1L15p0IV0wk3AEg3t7XQSXu1+11avBp5+2j/pvVEENmaEIl3xyPLyvv8d4gDSnI4ONuJvv02hOlO6UtTeBbXCQl5UtbXAu94VLjtteibV1ak11ykIQZKba3v2veHN5Ldzp80FEgoBzz/P895OWXk5HYERmjTCkxMmRP4ucQApjtbsPfhJT7/9Ni8Y74VisoHNmAFccw0vFmMjR3J+XfZlC0IwFBUxYHXs2Miv6eykgzCjdte2bwf+8Q+ubQDAzJmRP0ccQApw4gQbc1d62shPv/VW950MI0YwN+nMmWzoTU+gvp4NvOTtFYTUJjvbTgede67/a44csfL006f7v0YcQJKgNYd1GzZQqM7Ypk38Ebu67GtND2H8eOCyy6z09JgxbOglME4QhLIyxk71hDiABNPRwZ67USVdv56N/oYN3LtsKClhA3/22cDcuVZ6+pRTuLgqUzSCIAwUcQBxoqODUzZr19KMMummTeGLrjU1FKr7yEeAiROtjRghjbwgCPFFHMAA6eriwotRJV29mg39hg3hDf3o0cDkycB73sMGf/JkNvSSZ0AQhKAQB9AHWlrYwK9YAaxaBbz5Jht9d+pm5EjOu116qVUmnTgx+Ig/QRAEL+IAItDcDLzxBrB8ORv8FSs4X28WYysqgNNP59TNaafZxr4/wRiCIAhBIA4A7NmvXAksXQosW0bbuNFK3g4bxj3z738/NWmmT+eeeZmjFwQhlck4B9DezmmcpUuBJUtYrl1re/YjRrCxnzOH5YwZ0UXvCYIgpBpp7wB27ABeeQV4/XU2+CtWUIMcoLrkmWcCV1/NcsYMOgBBEIRMIK0cQFcXF2Vfeomh0C+/zFBpgPo2M2YAn/40G/uzzuLOHJnGEQQhU0lpB9Dezh79iy/SXn6ZOt4Ae/IzZwLnn0877TQRLxMEQXBJKQegNXv3L7xAe+UVmyFq/Hjg2mvZ6BsNnJj37hctAubP57xSXR2wYAHDdAUhQNx8vm6OX7/E8G4ieDchvDd/sJAZKB3r7M5xJCurQWu9DAB79O98J23mzL4ndOgzixYB8+aF5yQsKgIWLhQnkMF0dIQnkzcJ5U1pksm7ieTdPLgmR66bM/fEiXAz+XY7OrpbZ2fsErSbRPM5Od3NzVts8hqb3Mb5+Tb/sZsX2ZvgvbfE7pKKM34opZZrrRu6nU8lBzB8eIP+6U+XYeZMLuAmlPp6qrJ5GTWKUp1CSqI1A/nc9H9+yeZNPlk30fyRI73nKPaSk9M9ibw3ebw3abybMN40yKahzs62SeS9vXnXzN/qmhkpdHbyuLOTZhxLR4d1PO3t4Q7JL+G7X7J3V8SwN5RiTmaTtzlSEnc3ebtJE1pVJSKIPRHJAaTUFFBNDXfsBMKOHX07LwRCVxcbcDf/sDG/BPQHD/qnsTQUFHRvgOrrw5PLu4nlTc/W9HbdsrCQjXamoDX/t2YEZEZEx45Zc0dOR46EJ3E/coSZszZutE7Ym9vCpajIP1m7yc3r2tCh/J0ynQy6HAdIXZ3/CCA3l7oQU6cmvk4ZRHs7E9+YvMQmN/GePeF5ifftY4/Vi1LsKZoGYdw46qi7yedNT9L0LisqpFc5EJSyU0UDTd4O2NGam7zdmHHmBw9a575lCx2+K9XiUlQUnsLULx/v8OF0JOk6NSUOIFoWLAA+9jGOdQ1mrN7QAHzlK8A3vsFuntAnWlvDcxCbMhRiOrydO9mwe2crs7J4Aw8fzht46tTwXMSmNAnns7OD+fuE2KCUHXWNGhX9+1pb6RD27eOIYu/e8OM9ezjKeP55u4vQJTeXzsCkRTU5eU1ZV8drLRWvr5RaA2hoaNDLli0LrgI33gj87Ge8Es0uoMsuA778ZeDXv6ZY/8KFwKxZwdUxCenoYKO+ZYvNYrZtG5dOduzgTeilsjI8F7Ext2c2ZEhq3nRC8tLWFp6P1+TkNWY6Jt4sfDk5vF7r6hhf5CZpGjuWHZEgd1mlxRpA4IwcyfLYsfCe/q9+xZ1An/wkcNFFHCnccQfnEDKEjg7OkG3axIZ+82bali1s6N1pmdxc3iT19ey1m1zExmprOTwXhESTn2/TqEZCa44UQiF2YBobbW7e7duBv/+dzsKlpMQmdBo3jnbKKdy+HmSCp0AdgFLqXgBXANintT41yLpERSjESWK/aZ6LL6bI0Le/Ddx5J/DEE8CPfwxcd11abbA+cMA/beXWreGLqSUlvMjPOAO4/nqb5HrsWPbgpecupCpmPamykorAfrS22pGuyeG9ZQubiD/9KbxDVFpKRzB+PKXjJ0ygjR8f/45QoFNASqkLADQD+E00DiDwKaArr6SbX7my59e98Qbw8Y8zTPl97wPuuYfd2hTB5Cc2mczWrWOjv349HYAhL4+NvLlYx4+3vZugh7yCkKx0dLAZ2bSJo+RNm2gbN/K8aZKV4lrHpEk2iZSxvsrOJ20cgFKqHsATKeEApk/nRPTjj/f+2o4O4Ic/5MJwTg5w221cQ0iy7QRHjtCfrVxps5qtW8fzhqoqXoATJ9pywgQOk6UnLwixo6WFTsGMsk3e8I0brYglwGZo8mTmITn9dI60J0+OLHeTsg5AKTUPwDwAqKurm7HdbytmohgyhFM6P/1p9O/Ztg341KeAv/0NOO884Be/4C8VAIcOhSe4WbGCw1LD4ME2sc2UKba3MWRIINUVBOEknZ1cXzAjcjfXuFmQzsujQsL06bQZM/i4oCCFHYBLoCOA1lbO/X/3u9QD6gtaA/ffD3zhC9yUfMstwM03c8UpTjQ1sbFftswmunEDlkeP5kVyxhnWJO+BIKQWnZ3sxK1YwZnnN97g8aFDfD4nh7PQixfLLqCBYZb1+zOXrxTw4Q9zy+gXvsCF4ocf5mjg7bcHLDB34gTzEy9ZYvMebNhgnx89mqEKn/oUy+nTM2qDkiCkLdnZdtH4gx/kOa05Wli+nFZWBixe7P9+cQDREgqxHMhibnU1ReU+9CG2xu94B1202RKwfTsF54AencCuXZS+fu012vLlNj5t6FDg7LP59jPPZIOfcN0kQRACQym7lfXaa3nu5pv9Xxv0NtAHAVwIYLBSKgTgm1rrXwZZp4iYzDImFmAgXH45J/BGjOgep97SwhGB4wD27AGee472/PNcJAI4tzdjBnDTTWz0zz6b1ZPdN4IgREOgDkBr/cEgv79PmBFATU1sPq+khApYPugdO7D4UeDZZ2nr1/N8eTlwwQWMN7vgAgZR5eXFpjqCIGQeMgUULaEQJ86Li2P3mREE5rbrOlx7Lb9q5kzg3/+dAcbTpsm2S0EQYoc4gGgJhWIWzKU199vvOG8B3tU4DwVdVlS+NasIy69egJe+wLzF0sMXBCFeiAOIlsbGAc3/t7czjeXixQwF56aiufjyCODmo/NRcZQjgYKf3Y1rPyEZxgRBiD/iAKIlFOKWmj7Q2sr4r0ceAR57jAJSRUXcDfre9wKXXALU1s4FMJf7N885R7r8giAkDHEA0dDWRgHxKKaAWlqAv/4V+MMfqBjR3MxkGO97H7dkvfvdEQSezjqL+7Yeegj4yEdi/icIgiB4EQcQDbt2sYzgAFpagL/8hbFdTzzBx4MHMzDj2muZHqDXjr1SwAc+APzgB0xrJJv3BUGIM8mlTJasmC2gzhqA1tyXP3cu47uuu46PP/xh4JlnmFBi4ULg0kv7MKszZw6Dwh59NPZ/gyAIggcZAUSDCQKrrcXevcB991HFYcsWTu/MnQvMns29+QNK+j1tGrWUH3oI+MQnYlJ1QRCESIgDiALdGIIC8JFbavDgE9zRM3Mm8M1vcoonZmmAleIoYMEChv8OGxajDxYEQeiOTAH1wD//Cdx1F3D/90M4jHI8/nwpbrqJEqwvvkhJn5jngJ89G+jq4iqyIAhCHJERgA9r1rDhf/BBam0/VxGCrh2JnZvi0OB7MWL8v/sdRX4EQRDihIwAHN58k4u5p53GafgbbqC+9oVjG1Fxam38G3/DnDnAP/5hF58FQRDigDgA2IZ/6lQGbn3jG1z3/fnPuS4bSxmIqJg9m+XDDyfuOwVByDgy2gGsXQtcf71t+P/rv5if5TvfASorT77oxAlg797EOoBx45i15Xe/S9x3CoKQcWSkA9i0iVs3TzsNeOop4OtfZ8P/7W/7ZMravZub/hPpAACOApYsAd56K7HfKwhCxpBRDqC1lblWpkwB/vhH4KtfZft66609pEiMZSKYvvCBD7CUUYAgCHEiYxzA888Dp58OfO97wL/9G7BtG3DbbVEoLsQiFWR/qK+nOJw4AEEQ4kTaO4DDhxlUO2sW0NkJPP00I3mHDo3yA4JyAACngVauBDZuTPx3C4KQ9qS1A/jTn4DJk4F77wW+8hVg9WqqcfaJUAgoLQXKyuJSxx65/npGB6fzKGDRIo52srJYLloUdI0EIWNISwfQ1gb8x38AV18NDBlCqf3//u8IMsy9McBEMAOipoaaEw89xIXodGPRImDePKbF1JrlvHniBAQhQaSdA9i/H3jXu4Bf/Yq7e5Yt63Mel3ASHQPgZfZsZoVfsya4OsSL+fOpne3S0sLzgiDEnbRyABs2cN10+XLOmtx6K5CbO8APDdoBXHcdp0fScRpox46+nRcEIaakjQN45hk2/s3N3PFjdlEOiPZ2xgEE6QCqq4GLLqIDSLdpoEhTa1ozscLu3YmtjyBkGGnhABYtYp7dkSMZO3X22TH6YBMEFtQagGH2bCYfWLEi2HrEGr8fqrAQuPJKOrwJE6jK196e+LoJQgaQ8g7gxReBj34UeMc7gJdfBkaNiuGHB7kF1OX972emmXSaBtq+nfkzGxr4oynF8he/4PatNWv4o37xi8AZZzDdmiAIMSWlHcDbbzMhy9ixwOLFcdipmSwOoLISuOSS9JoG+vzn2eg/8gh/yK4ulnPn8vlx44A//5nO4NgxToPNmSMKqYIQQ1LWATQ3A1ddxRS6jz3G1IwxJ1kcAMDGb8cO4LXXgq7JwHnySWpxfOMbQF1d5NcpxemgdeuAb32LzmDiROD22ynSJwjCgEhJB9DVxTXCNWvYKR4/Pk5f1NgIFBcD5eVx+oI+cNVVQH5+6k8DHT8O/L//x4b8i1+M7j2Fhcy/uW4dcPHFwNe+RiW/p5+Ob10FIc1JSQfw6KOc8rnjDs6MxI1QiAvASsXxS6KkrAy4/HLmCOjsDLo2/ef22ynE9JOfAHl5fXvv6NEcOTz5JHsBl17K9ZG775ZoYkHoBynnALQGvvtd9vo/97k4f1nQMQBe5szhzqR//CPomvSPrVuB73+ff8dFF/X/cy6/nMO/732PC8lf+ELyRBOLtIWQQqScA/jzn4FVq4BbbgGys+P8ZcnmAK64gnoWqTgNpDWnfvLygDvvHPjn5ecDN9/MOAkvQUUTi7SFkGKknAO49VZ2rP7t3+L8RR0dwQeBeSkuphP4wx9Yv1Tij38E/vIXZt0ZMSJ2n7trl//5IKKJRdpCSDFSygEcO8ZAr69+NQYSD72xZw/n2oMOAvMyZw4Fj1JpX/yxY5yvO+00jgJiSaRdREH8biJtIaQYKeUATOfq8ssT8GXJtAXU5fLLKU+dStNA3/0ud1Tdcw8D2mLJggX+Mq9jxyY2ZmLlyshzkgUFnLccyPqArC0I8UBrHZgBuAzARgBbAHytt9dXV8/QRUVad3bq+PP732sNaL1qVQK+rI/ccIPWgwZp3dYWdE16Z906rXNztf7IR+L3HQ88oPWoUVorxfLKK/nbffWr8ftOQ1eX1j/6kdZ5eVqXl2udn8/vNpabq3VhIY+zs8OfKypi3Xv7m6qq+Pnue5ViWVWldXFx+HOuZWVpfeON8f8/CEkNgGXarw32O5kIA5ANYCuAMQDyAKwCMLmn95SVzdDTp8frX+Thrrv47zl4MEFf2AeeeIJ1e+KJoGvSM11dWs+aRWe1d29iv/fGG/k/+v734/c9Bw5YZ/Pe92q9b193Z/TAA1r/8590Dn4N9KhR3T/3gQfoHCI16v0xcQIZTTI6gHMBPOU8vhnAzT29Jzd3hp47Nz7/oG588Yu8Cbu6EvSFfaCtTeuKCq0/9KGga9Izv/0tL7Gf/CTx393ZqfUHP8jv/9nPBv553oZ9/nyta2rYM7/77t6vE9Nj95pS3T/fO1KIhWVnD/x/IKQskRxAjCdk+0QNgEbncQhAN3lIpdQ8APMAICdnGlpbE1O5f20BTYYgMC95eQyAevhhoLWVc8zJxpEjwJe+BMyYAXzyk4n//qwsJn8+cgS48UZGc8+Z07/PMts7zSLU9u1cexg6FHj1VWD69N4/o66O7/OiNXDhhdzdcPw4z8Uj0C+VgweFuJH0i8Ba64Va6watdUNxcTbWr0/QFydbDICX2bOBo0e5tTIZ+eY3uZPqnnsSELARgdxc4Pe/Z1rNG25gBHF/8NveCdARR9P4A/6L1YWFDGV/4QXb+MeLoH4DIakJ0gHsBODu1as9eS4ihYXApk0JkodPdgcwaxYTHj/0UNA16c6bbwI//jF7zWedFWxdCguBxx8HTj+d0rEvvdT3z4i0jbMvyqRz5wILF3aXvn7qqehGmbm5QFUVj/szKp03r+/vEdKeIB3AUgDjlFKjlVJ5AOYAeKynNxQUMP5py5Y416yzE9i5M7kdQE4O00U+8QT32ScLXV3Apz8NVFRQqiEZKCsD/vpXbp+84oroE+u0tlK7KBI9KZn6MXeuv/R1pM/JzrbO4le/Ag4c4JTR/fdbR1JVxQDBSGRlcQrsnnv6VlchIwjMAWitOwDcBOApAOsBPKy1XtvTe8x1HvdO7969yRkE5mX2bE5NPPFE0DWx/OY3zMxz++3MY5AsDBlC9dBBg5g+buPGyK/VmhfZxIlUHp02rfs6S1ERp3Vigd/0UFER1zC8zgIIdyQHDlAbPdLyb2enNP5CZPxWhpPVZsyYoa+5hrsKDx+O6SJ5OK+/ztvn8cfj+CUxoKND6xEjtL766qBrQg4d0nrIEK3PPTdBwRr9YNMmraurtR45Uuvt27s//8orWp9zDn//adO0fuYZnvfb3hlL4v35QkaDZNsG2h+bMWOGXraMtf7e92L/T/oXjzzCL3njjTh+SYz43OcYfBRXjxglN97IwKNk/7+tXMl9+cOGaV1by0Z3xAitzz6bv/vw4Vr/6ld0sIKQBkRyAEm/C8jLjBlUQ/jBD+I49d14cndqMq8BGGbPBtramC0rSJYtA372M+CmmzhlksxMnUptoj17uJCrNUXlXn+d22s3b2aiadk5I6Q5KecAAGYSPHCA97COh9xLKMQ5X7PrIpk55xwuCAapDdTZyYXfoUOB73wnuHr0hfvu8z+/fHnPi6qCkEakpAM491zg618HfvlL4Ec/isMXJHMQmBelgA98gAuchw4FU4f/+z9g6VLgf/4nOdJnRoModwpCajoAgLLy11zDtLIxTw2b7DEAXubM4f7YRx9N/Hfv38/ELBdemIAkDTEk0tbLvm7tFIQUJmUdQFYWdxyeeiqnwTdtiuGHNzamlgM44wzglFOCmQb62tcYkfyTn6TGiMkQaetlrLZ2CkIKkLIOAABKSrj2mZPD/OAxkYno6mIQWLLHALgoRS/47LPAvn2J+95XXgHuvZc5eSdPTtz3xgK/yNyFC8P32wtCmpPSDgBgcOdf/sJ4qHPPBZ55ZoAfuG8fp1NSaQQAcBqoq4vpIuPNokVsMM8/nztlJk6M/3fGg0iRuYKQIaS8AwCAhgbu4KutZZDnL34xgA9L1kxgvXHqqeyFx3sayChjmsXSzk6meZQMVYKQcqSFAwA4EnjlFeDii9k+feUr/VTATaUYAC9z5lDsbGePmnoD45ZbJPG5IKQJPToApVSZUmqsz/nT41el/lNWRuHHz3yGOxKvuKJvgo0AUncEAHAdQGtKIMeDlStl+6QgpBERHYBS6gMANgB4RCm1Vil1pvP0r+Ndsf6SkwP87/8CP/0pZdanTOHaXldXlB8QClHnfciQuNYzLowfzyjcWE8DNTcDX/4y59qyIlwysn1SEFKOnkYAtwCYobWeBuDfAdyvlLrm5HNJv9/vU58CVq+2CakuuijKraKpFATmx5w5wGuvcVEzFjz2GNcW7rwT+NjH6Fll+6QgpAU9OYBsrfVuANBaLwEwC8DXlVKfBRAPAYaYM3YsdwX94hfAqlXMCbJgAXDiRA9vSrUgMC8f+ADLhx8e2Oc0NjLS7qqrGN378svAz3/OBRbZPikIaUFPDuCoO/9/0hlcCOAqAFPiXK+YoRTw8Y8zRuDKKykhMeMamIUAACAASURBVGMG8NxzEd6QakFgXkaPZhau/k4DdXQAd9/NXv9TT1HXf8UK4Lzz7Gtk+6QgpAU9OYAbAWQppf4V4aO1PgrgMgAfj3fFYs2wYewUP/YY0NTEKaGLLgL+8Q/nRakYBObHnDlstDdv7tv7li6l8/jCF4ALLgDWrgX+8z+ZjlAQhLQjogPQWq/SWm8G8LBS6quKFAL4AYBPJ6yGMeZ97+NawN13A+vWMV/4pZcCr74KSoyeOJHaIwAAuP56ltGOApqauJf/7LMpkfz73zPL2OjR8aujIAiBE00cwNlg8vZXwDy+uwCcH89KxZuCAkpJb9sG3HGHneG46eoU3gLqUltLz9abA9CakcOTJlHL5zOf4VzZddel7iK4IAhRE40DaAdwHEAhgAIAb2mto91UmdQUFXF341tvAf/930DTGgaB/b/ba/HSS3HKNZAoZs8G1qzhNI4fb7/NQInrr+f82OuvAz/+cerIOQuCMGCicQBLQQdwJoCZAD6olIpTpFEwlJQwcvj/vsURwLObR+KCCyiyuXAht8GnHNddxz373lFAezsXdidPBl58EbjrLmDJEuDMM/0/RxCEtCUaB/AxrfV/aa3btda7tdZXAXgs3hULgvz9ISA3F0veGoKFC3nuk58ERozg7MibbwZbvz4xdChF2m67jY6gvh741reA6dMp4XzppVwE+fznGT0nCELG0asD0Fov8zl3f3yqEzChEFBTg+LSLHziE8Abb3D7+zXXMPvY1KkUwLzvvu5yOEnHokXAli3c1qk1sH07s+js2kUN7cWLU3+3kyAIAyJtxOBigicGQCkuDt93H3eH/uAH3Cj00Y9yVHDTTQwwS0rmz/ePeCsuZkCEIAgZjzgAlx6igKuquD1+wwbg+eeB976XqXCnTaPddhs73ElDJHG2PqvjCYKQrogDMGjNxrGXaRGlgHe+kzMsO3cCP/whdxPdcgswbhyn2G+7re8xWDFHct4KgtAL4gAMBw8CbW19igGoqgI++1nmIdi+nXppeXl0BuPHc83g1lu5EzPhW0ol560gCL0gDsAwwEQwdXXAF79IIc4dOxhpXFoKfPObTNY1aRIdw9KlfZCmHgiS81YQhF5QOoWinRoaGvSyZd02JcWGxx/n4ujrr1MPJ0bs3g388Y/Ao49SgK6zE6ip4RrCpZdSj2jQoJh9nSAIQjeUUsu11g3e8zICMJjF0RhvjRw+HLjxRuBvfwP27uWOorPOAh58ELj2Wk4jnXMO8I1vMC6rR6lqQRCEGCIOwBAKMSCqujpuX1FVBXz4wxwNHDzIBn/+fM7QfO97XFyurATe8x6uJ6xalaDpIkEQMhIJATU0NnJzf3Z2Qr4uN5d6bTNnAt/5DnD4MKeInnmG9uUv83VVVXQMF10EzJrFtQTRaRMEIRaIAzAEnAls0CBGHF9zja3Oc88Bzz5Le/RRnq+upkO44ALg3HOZ5Uzk+gVB6A/iAAyhEDfxJwm1tcANN9C0pnT1889b+/1JOb6CAuZqP/ts2llncUeSjBIEQeiNQByAUup6AN8CMAnAWX56QwnFBIElqUSCUsxvPHYs87Jrza2mr7/ObaevvQb87/9y3QDgKOHMM8NtyJBg/wZBEJKPoEYAawC8H8DPA/r+cA4dAo4fT5lEMGZb/6hRNgf8iRNUK12yxNqTT9oAtLo65kJuaGA5fbo4BUFIN7q6OFuwfLm1mprIrw/EAWit1wOASpZ5ilDqZwLLy2Pj3tAAfPpkws4jR6hounQpsGwZL4bFi+17amuZ88DY1Kl0KlmyN0wQkp62NmqTrVrF+3zFCmDlSt73ANuE00/nWmEkZA0AiFsMQNCUlXHB+J3vtOcOH+bFYi6YN94A/vxnu920uJg7jaZMYc6YyZP5uL4+YRukBEFwOH4c2LiR2VrXraOtXUvxyc5OvqawkKKUH/oQR/fTp/Mezsvj85EUYOLmAJRSfwcwzOep+VrrP/Xhc+YBmAcAdfESMkuDEUC0DBrE7aSzZtlzx44Bq1czg6TJIvn3vzNozZCfT32jSZOYZ2bCBJbjxzOjmiAI/UdrYN8+NvQbNthy/XpmbzVTudnZwCmnsGN2/fVs5KdO5X3Ynw5a3ByA1vriGH3OQgALAUpBxOIzu9HYyP/eMD9/lf4UFzMa+Zxzws8fPszehrkQN2zgNNIf/hAeoFZTwwtw/Hgqoo4bx4t0zBjuUhIEgRw+TKXgLVtYbtpkranJvq6ggJ2ss88GPvIRdrwmT+a9lZ8fu/rIFBDAEcDw4TLH4WHQICbEOe+88PNtbbyAN2ygmQv5D39ghLNBKc6qjR1Lh2B2Mo0ZQxMNJCHd6Oqi/te2bbStW2lbtrD0uz/Gj6dG4/jxHFVPnMjziViLC2ob6DUAfgxgCIA/K6VWaq0vDaIuAAIPAks18vM59Jwypftzhw7Z3o3p6WzdSkG8/fvDXztoEC/0ujpb1tbyuLaWJiMIIVnQmr30UIiTBqbcsSO8bGuz78nK4nU9diy1v045xY6Sx4zh3H2QBLULaDGAxb2+MFGEQlwuFwZMZSWD0fwEVY8cAd56i2Z6SObGefVVOg+/z6upsTZiBG34cGtDh9rFLkHoD83N7Lnv2cNy1y5rO3da8+YCz8ri9ThyJLdXX3ONHeGOHs1ddcl8bcoUkAkCe897gq5J2lNWxgWrqVP9nz92jDeZ6V2FQvbGC4W43W3vXn+BvMpKLuEMHWrL6mprQ4ZYKy2VSOl0p7MT+Oc/Oeo0tm8frx9T7tljy2PHun9Gfj47GDU13CZ9xRU8dkepw4enthSLOIDDh/nryxRQ4BQX28XkSHR08AbetSu8x7Z7N2/mvXsZBBfppgbYIxs8mEJ7pqyqohMxZUWFtUGDaCUlEiORaDo6OO1y+DAbdNcOHbJ28CBw4ADt4EGei6Sk63YWzjyTpTuiHDaMDX1FRfp3FMQBZNAW0HQgJ8dOA/VGSwt7fnv3sjxwwPYG3QZj9Wo2KAcP2n3VfmRlcRRTXh5elpbSORgrLg63oiJaYWF3y8/nOkd+fuo2Np2dnPdubaUdP27L48f5Oxg7dsxac7Mtm5s5RdjUxNIcNzf3/N2FhWzQKyvpzE8/3Tp1M+IbPNiOCKuqUrvHHmtSygFs2gTcfDMDm84/nzfegEnTIDCBja6RzIgGrYGjR9l7dHuahw/Tmpr42G2o9uzhQrdpxJqb+5/DITeXjiAvz5a5ueGWk2MtOzvclKKTUirc3L/PlFqznqbs7Ay3jg5r7e20Eyds2dZmy56cZm9/r9d5lpfzVjQO1oy+ysvDR2UVFWz0g15ETXVSygF0dQH/8z/A97/PC376dCuN/I538KLoMzICEE6iFBuesjJGPvcHrdkoml6ut/fr7SG7PefWVjaqrrmNr7dRNo2vMW/D7jb4xhGY0jgKU3qdSVGRdTReJ2SckzHvSMaMbgoK7OjHjIDckZH0xIMnpRzAxInACy8Ar7zC8sUXgR/9iE5BKSZfN0lWZs7sWQTpXzQ28i7I0CAwIbYoxYavoIDTDYKQzKSUAwDYc3j3u2kAe01LltAZvPQS8JvfAPfcw+fq6zlVdP75jHI99VSfXkcoxMZfuiOCIGQYKecAvBQUcAroggv4uKOD2wVfegl4+WWmV1y0iM8VFnLa6KyzuPp/1lnAmFAISub/BUHIQJTW8ZHXiQcNDQ162bK+5Y7RmmJKS5YwgcqSJdSzaW3l8xuyJmPf4Mn468f/8C855dra1N2RIQiC4EUptVxr3eA9n/IjgN5QihF5o0cDs2fzXHs7FS+XLtEYdVMjlnVdgttvt7sZqqsZ1eeaOAVBENKNtHcAfuTmUjt72ugjwCebMfertXj/Z5hRy02e8tRTdkvf4MFWZ9skUBk7VgKDBEFIXTLSAfwLZwtoYaFNrG5oaeF6wooV1u68kyMIgFvbpkwBTjuNC8ymHDpURguCICQ/4gCAiEFgRUVMp+amVGtr4/TRypWMIH3zTeCJJ4B777WvqaqiIzCKmSa7luTgFQQhmchsB9DYyLIPQWD5+XYqyGXfPmbTWr2aDmLtWuCBB2x+ToAOwE2zaGzECBkxCIKQeDLbAYRCbHmHDx/wR1VXAxddRDNoTSVLk8Nz7VoeP/ggpQUMpaUMcps0yaZanDiRawyxzP4jCILgIg4gjmLyStnEJpdcYs9rTQ0Zk2bRlM88w0A2Q1YWdWxOOcWam1WrqCgu1RYEIUMQBxBAEJgZdAwfHj5iACgmtmmTTQy9aRPFxn772/CcoQDfb5JPuEkoRo/mtJLsUBIEoScy2wE0NnLOJYkoKfFfY9CaKpUmx+jWrTaz1gsvcL3BjenLy+Poob7emlHGrK+XFMiCkK60tjLL3vbttJKSyK/NbAcQCgHvelfQtYgKpWziEr90i21t/NHdlIvbt/PYLx9vTg6npurq6BTc3LzGystlcVoQkomuLua3aGy0tmNHuO3dG/6ec86J/HmZ6wBM1ok0kYHOz7fJpv1oaeHF8fbbtmdgegnPP88MW15d9+Jim/rOzcnrzZ4kidsFYWBozebIZLcz5uYkbmxk2dER/t7CQt6no0Yx3eqoUezMmVF/TU1krcvMdQA7d7LMECG4oiK7u8iPzk5ecG7PIhSy5TPP8Hm/5B+DBllnYFLtec3k5pVdTUKmoDXX9Nw8xF4zaU337GF+CC+FhbbzNXOmzUfsWmVl/0fqmesA+hEDkM5kZ9sdS27gm0tXF6eSvL0UcwHv2UOxvb17I6fyKy9nPIQ3UfvgwbY0VlUlCdyF5MEkmnfTibqpRk25b58tjeikl6oqm4v4vPNs58kdXQ8fHv9p2Mx1AJIJrM9kZdke/bRpPb/22LHwno8p3Rtk2zYqtB440H1Ya8jJ6Z6w3Zg3RaCbwH3QIJmaErpjeuUmzadfsnm/hPMHD/K1kcSTi4psB6a6mkoApqPjjoDNcbKkHxEHEE12caHPFBfbram9oTW3uHqTtR84wMfmJjx0iGsWb7zBxy0tPX9ufj57UF4zaR9NQveyMv+k7u5xYaHsmgqK9vbwZPJuUnnXjhxhTmc3qbwpm5rYgB850nsO4/Jy29moqOC2arMBo6qq+yh1yJDUjclJKQfQ3h6e33RAhEIyKZ0kKGV77ZEWsf04ccI/ebvp1Xlv/KYmjkJMw3D0aN8SuLs5bgsLbenmwDWlsfz87ubm0zWJ390E8CYPr5v83S8JfFaWLb2J4KNJCu9aV5c1b4J4kyTelO3t4aWbLN5rbW3dzc2BfPx4d2tpseWxY5FHh37k5lrnbhz+yJHskZvk8ibBvDtaNCPI8vLMcvQp5QDefJMe9/TTqbxp1DenTOEP1ycCCgITYkdenp2S6g9as5ExzsDtVXp7m25id7eBamlhQ3bkiG3ATENnjnvrcWYKubndnaPrPCsruzvY4mJ7zk0oX1zM0ZsZpZmRnPTn+kZKOYCRI4HLL6fg2q9/Hb7QaLz8lCm2nDSJF4cvjY3UVBAyFqVsYxIDOaiIdHZap+DtHZuesym9PWzT6zY9cNfcXntXl3/PHggfNbula2YkYcwdaXhHIe5IJScnfCSTm2tHOu5xXp5EpicjKeUAqquBn/+cx1pzH/vq1eEqnM88wxsJ4IVdX2/lmI1NnAiUhkLAO98Z2N8iZA7Z2bYXKwjJREo5ABelrLTBFVfY8x0dlElYs4bKm0aJ8+mnrWMoRjOacRgLn6zFik9RDWL8eJb19ezVCIIgpDtp19Tl5LAhnzABuPZae76jg9sO164F9r20E7gL2Jk9Eg8/zAVD9/1jxnAxcvx4G117yimcZsqkBSJBENKbtHMAkcjJYYM+fjyA0kbgLuDb/1eLb13A7YabN1N509jmzcCzz4ZH5+Xl0Tn4yTOPGhU3VWlBEIS4kDEOIAwnCEwpG4163nnhL+vqohbHli10CKbcupXOwd2HnpVF/Q2j1T9mDI+NPPNAwrUFQRDiQWY7gJqaHl+WlWXlES68MPw5k9RlyxYrz7xtG0s/9c2yMjoCs25hrK6OVl0tuyQEQUgsmesAhgwZkFaAm9Rl5szuzx89Sodg5JmNRPO2bcBzz/F5l/x8K/TklWU2ipyDBskoQhCE2BGIA1BK3QHgfQBOANgK4N+11od7fleMWLQIuO8+Ru/U1wMLFgBz58b8a0pLKc06dar/84cPW0lm1xob6SAiyTObEUlNTbhMs7HqalmoFgQhOoIaAfwNwM1a6w6l1O0Abgbw1bh/66JFwLx5VqJv+3Y+BuLiBHrChKBHchAdHVTaNJLMRpY5FKKS9bPP+sszZ2VRVbCmhqOTESO6a/gPHy6OQhDSldbWcLXeiMGwAJSOJG+XIJRS1wC4Tmvdawvc0NCgly1b1v8vq69no+9l1ChmSkkxOjuprGkSRuzaZRNI7NplE0ocOND9vVlZnAUz+v2mNIqFXslmUdYUhGDQmlPGXqlpN8eAK8nuzR1+3nnAK6+o5VrrBu9nJ4MDeBzA77TWD0R4fh6AeQBQV1c3Y7tfAx4tWVn+eq5K9U0VLMVoa+OF4fYKvMkozIXU1ub/GSUl4dr9rn6/UUh0FRMrK2VbrCB4MfpTRmLamFG+jZRjwASxeikrs3pYblImN7cAp4YT7ACUUn8HMMznqfla6z+dfM18AA0A3q+jqIiMAOKL6WkY3f79++2xuRDNsbGeJJlLS/01/L1a/kaN0UyLZZoio5B6tLWxp21UaN3S5BMwx0bK3MiaR+pkAbz+Xblpt9NlcgqYkXl1dfQjc6X8HUDc1gC01hf3UqGPArgCwLuiafxjwoIFnPN3W62iIp4XoJSV0o1WltntzZhejGtuYo0dO+xN0ZvEb2mpdQaujK+R+XU1/Y2uv9dKSsSRCOGcOMFOjp+ZPAJuLoEjR9iwu9LiTU3+6RtdCgttZ6eqivdTRUX4KNmbY6CyMvGJYoLaBXQZgP8E8E6tdS9pPWKIWeidP5+tUV1d3HYBZQpG5KwvytpaU1b50KHuGZnMTWbM3Hi7dwMbNtjH7e3RfVdhoXUGRjrYTfRizPwdXnPlio25j0XpMjYYxVQ3V4CbM8DNHWBkuF3zSnf7JYxpbo48leKlqCi8w1FezubCdEjc0ap3NFtZmTqy1IGsASiltgDIB3Dw5KnXtNaf6u19NTUN+s47l/1Ln6esLK7VFJKY1lbba/Mrjx61N72r9X/smH3sbTQGsgzklT72S/ziSiZHSv7SlyQwJhFMTwlh/IiUEMabGKan5DBughivhLXXjPx1e7uVxHbLgeZMyM21+QK8Gd3cfAFu1jczSnSzwrlluglCRpoCCnwRuC8o1aABuwZQXd1dl8ccV1YGWFEh5dCaDZLpPbqZqbzZq0xP1a90Nf/NsWkEjf6/a6YB9dP/9+YACGqfgtcJeR2V68C8Ds6b8cybFS0/Pzxzmjuy8o62zGjMjMxMqs5kya+bzKSFA5g+vUHfd98ybN5stXmMGXUHw6BBVo/H1ecZM4bTFenm4YXMwO2Ze3vufslgAP80qt6RgndE4aaaFFKfhC8Cx4OsLJsK0svx41aLZ+tWOoVt24CVK6nN484Z5+RwPm/0aDoEI9hmbMgQufCF5MQ01NKBEWJB2lxGhYXM/DVlSvfnOjoYHGW0eLZutfo8fsJthYVWpM0ItrnCbTU1qbPIIwiCEIm0cQA9kZNj1Tdnzer+fHMzwwCMU3A1eh5/nHvhvQwdaoXbjIibK9w2fLjMTQqCkNxkhAPojZISJpI/9VT/51tbucawYwedg9Hm2bEDWL+e6SbdBPUAp5CMJo+faJux0tL4/32CIAh+iAOIgoICu7vID625N90ItxnBNvN482bg+ee5r91LaWm4YFsk8TZxFIIgxBpxADFAKRsYEmkUAXB7oRFr8wq47doFvPoqA56MWKlLcbHV+PCKtxkBN3NcViaL2IIg9I44gARSXGyTzEdCa44UjJKnK+BmhNvWr+eI4tAh/8/Iy+uu5ulqingF3SoqRDJBEFKZtrZwjS5XTG6YnyLbScQBJBlK2bDyyZN7fm17u5WGNaJtRibWyMbu388pqP37u69TeL/TT9XTVff0CrqVlspIQxBiSWcnO4CuhpYrJOdnBw70fG9fcknk7xMHkMLk5to1g2hobQ3vGbg9BfdiCoWAVav4uCe1z+zscB2USAqfrn6K0VUpL+faijgQIZ3Qmo2xn4Cc0bfyKod6tbB6YtAg2ymrrmYn0Tx2R/ZmdF9ZyV2Qke4zcQAZREGBTSkZLa2t3XshrtztwYP2Yj50iDEW5kLvTfEzL8+qeboKn+bY6Ld4FT69wm7mWKaxhP5w4oTVjfITkXMVQ5ubw1VD/dRDe5PsKCy0HaKKCnbgpkyxI2szynZH3qZjFesAQHEAQo8UFPRtlGEwip/e3o/pFZlz7s3T1MRdU2vX2pspWvVGgMF5fgqfXrVPoynjZ179GVeXxujVuHo2MoKJLV1dVlPJmKu31JtSqGt+iqGucqg57q2j4lJU1F2GfOzY7sqhxrwj34qK5AoiTSkHsHs3cP/9zOtSX89GSXp9yYlStnfelxGHF9M7c9U9/RQ+TeknC3zoEHdcuY3C8eN9cy6R8FP+9BNBi0YB1E/9M5IKaG9KoOY3cB2U0QdytYL8FEHNsRGgi6QK6lUHjUYZ1AjjuSqhrnheXxrjSLiiccbhm47AkCH22E891By7o00z+kzHUWZKicF51UCNpk99vY30da22VtISCpHp7LS9RW9v0vQ4I6l/ulLG3kbMNHSR1D/d0iup7NfAuo1xom9Xpbo7IK+jcp2Zeew6ut7UQV3n6R1heUdh7mPvqM0cy6isO2khBjd9OvDgg+GSDdu3U8bhr3/lCMFFKQZRuTo+xoxkw+DBcsFkKtnZtpeXKpgeulED9VMCdV9njt1RgSndY+9IIju755wCQnqQUg5AKWD8eJofbW2cQzaOwUg3bN8OLF8OLF7cfdifnx8u1+An2yC6PkKy4Mo3C8JASSkH0Bv5+T1LNnR1ccvjjh3c6missZFzxK+/Djz6aPekzUpxy5VZDK2p6S7fMHw4X5Nuc4SCIKQvaeUAeiMri5IJQ4cCZ57p/xqtubXRlWtwJRt27gSWLmWgld/nV1eHa/gMG2ZL14qL4/u3CoIg9EZGOYBoUMoGUkydGvl17e2UZTByDX6yDW+8wQhdv33BRtvHOCSj5+N9XF3N7WMyFysIQqwRB9BPcnOt/n9PdHZyRGEcw969NKPrs3cvsGkT8NJLjMKN9F0mss9Pz8eYiQgcPJg7IgRBEHpCHECcyc62Kp09jSgAbgU8cIBOwavvY3R9DhwAVqzgsZ+8tKGwsLuWj7f0Rh5WVPB9MtoQhORHawZLGhmJSPpBo0dH/gxxAElETo5dI4iGjg7+yH56Pl7BqDVr7EXRU7BNfn53PR9z7EY1+mn7DBrEfdiCIPSO0Q3yRsd7o+ddDSFj5nFPshOFhezcXXhh5NeIA0hhcnLs6CJaIvUaXH0f1/bsATZssBdhbzonRt/H1fbx6vsY89P7McclJXRGMhoRkgmtGUluItO9OkFHj/L+MucGqhuUlxfeGRs8mHLyrvCidzRvHrvTwIsW+X++OIAMQynbY6+v79t7teZF7VU59B6bi9wcG32fpia+P1oJhpyc7oJvJSXh+j5enR9v+H9vWj+FhbEX2BISj9a8rqLVCOpJK8jVC/KTG4k2GruvukFmFO3qBsV7RJ1Sl35rK38A2UIZDErZi7m3xe+eaGuzvSNvL+rYsfDelLnxjh61N+bBg4zl8N60/ZVJyM4OlxowUgTusStV4EoXeDWAerKetH+88gpGesFPB8iN3O1NC8iPaLWAXPNKUvjpAfVHG8jVBTKln7yGKY0UhysUZ84N5Pf3ExAsLmaP26tA61Wl9arVlpWxTIWORQpU0bJ2Lf+xFRVWysGUbiRvba3k0E1mTKM6eHDsPlNrNgJuj87t9Xl7g15FSW9j4rWWFk6J9aT9c+IEG0AheryCeZG0gfLyeE+7WkFepVZ3lOeO9PxUX93RYiZH+aeUAxg9Gpg3z0bvNjYyKGv//u6vLS3tLulgzETzDh2aGl5a6B2l7I1fWRlcPbq62Ns1PVpvD9jbO/brRbs9bPfY2zPvTQvI4GoBGaLRAjLn3FGIeexaJHE499hPHK6nRCVCYkip5q+yEvja17qfb221EbtG3sGN4n32We7B9/bOlKITMLIORtLBjdwdPpyvSSYNbyF5ycqyvVdBSHZSygFEoqCAiytjx0Z+TWcnRwpGzsGVdti5k6OJJUv8JR4ALs6YyF03gtcvkle2QgqCkAqkhQOIhuxs26ufPj3y69rb6QRMpK6J3jVRu7t3MxBr714uYvpRWhou5TBkiC39THqLgiAEQcY4gGjJzbVrBb1x/Hh41K4xE727bx+wZQvw6qs8F2nPb1mZv8SDkXXwyjyYRM+CIAgDQZqRAVBYaNNT9kZXFwOtjKSDK+3gPt65E1i1isetrZE/r7w8XNrBTSDtBoO4Mg8SqSsImYOJNO4p7kYcQILIyrK9+UmTonuP2fPuyju4Mg9G6+PgQWDzZhsi3tN+6IKCcFkHr7yDX0CKG7hSWio5DwQhEZw40T2w0mt+shFNTbYt6OwEZs2K/B3iAJIYE4xSVxf9ezo7eQEcPNhd1sHVEzEXzcGDnKYyj9vbo6uX6xDcSMeezA2eMSbic0K60NnJeJHmZmtuUKOfVERPkhHexFR+FBeHRw4PHQpMmGAfV1QwQdZzz/m/PxAHoJS6FcBVALoA7APwUa31riDqkm5kZ9spoL6iNaedDh/u3utwH7sXrHm8b1/4hR2NIwHY+PvJPLjmnotW8sEr/yCjlsymvd1fFiJaiQgTce5KRHjlIo4fj74+hYXhmlhlZVx3nDTJdqbckXck6YiBBrEp3d/46YF8qVJlWusjJ48/C2Cy1vpTvb2voaFBL1u2A9doigAABl5JREFULO71EwaOkXvwimZ5e0devRXvsfcG7G+kbW6uDRRzJR+8pWveSFSv7EO08g9eGQg3eMpb9iYBkchE7T3JQrhBal4ZCG/pJwcRjTSE10xUtnvsSkJ4o7ndaO/+Xjd5ed11p0yHxZjbgXGlIsyxn+BhojdxKKWWa60bvOcDGQGYxv8kxQCi8kJr18anPkLsiYfcA8DGwTgDt7fm15vzCoNFkn4w55qawhsVrw5NtKOaeOM6gmi0gEaOZJyLIVotoGTBzxl7nXVRETdCeKUhXFkIv8deaQjz2DT26T5yDGQEAABKqQUAPgygCcAsrbWPoAOglJoHYN7JhxMAbIxRFQYDiJCDKzCSsU6A1KsvJGOdgOSsVzLWCUjPeo3SWg/xnoybA1BK/R2AX2qT+VrrPzmvuxlAgdb6m3GpSASUUsv8hkRBkox1AqRefSEZ6wQkZ72SsU5AZtUrblNAWuuLo3zpIgBPAkioAxAEQch0soL4UqXUOOfhVQA2BFEPQRCETCaoOIDvK6UmgNtAtwPodQdQHFgYwHf2RjLWCZB69YVkrBOQnPVKxjoBGVSvwBaBBUEQhGAJZApIEARBCB5xAIIgCBlKxjoApdS3lFI7lVIrT9p7gq6Ti1LqS0oprZSKcShV/1BK3aqUevPk/+pppdSIJKjTHUqpDSfrtVgpNSjoOgGAUup6pdRapVSXUirQ7YRKqcuUUhuVUluUUj759BKPUupepdQ+pdSaoOviopQaqZR6Tim17uTv97kkqFOBUmqJUmrVyTp9O5afn7EO4CR3aa2nnbQng66MQSk1EsAlAHYEXReHO7TWp2utpwF4AsB/BV0hAH8DcKrW+nQAmwDcHHB9DGsAvB/Ai0FWQimVDeAnAC4HMBnAB5VSk4Os00l+DeCyoCvhQweAL2mtJwM4B8BnkuD/1QbgIq31VADTAFymlDonVh+e6Q4gWbkLwH8iSomMRNBf+Y54orV+WmvdcfLhawBqg6yPQWu9Xmsdq4j1gXAWgC1a621a6xMAHgK3XQeK1vpFAIeCrocXrfVurfWKk8dHAawHEEVqqLjWSWutm08+zD1pMbv3Mt0B3HRy+uBepVRF0JUBAKXUVQB2aq1XBV0XL0qpBUqpRgBzkRwjAJf/APCXoCuRZNQAcFSAEELADVqqoJSqB3AGgNeDrQlHckqplaBy8t+01jGrU1rnA+hJjgLATwHcCnrTWwHcCTYiQdfrFnD6J+H0Jt+htZ4PYP5J+Y6bkIDo7WgkRZRS88Hh+6J416cv9RJSE6VUCYBHAHzeM/INBK11J4BpJ9e4FiulTtVax2T9JK0dQLRyFEqpX4Dz2gkhUr2UUqcBGA1glaKUYy2AFUqps7TWe4Kqlw8Jk+/orU5KqY8CuALAu3QCg1r68L8Kkp0ARjqPa0+eEyKglMoFG/9FWutHg66Pi9b6sFLqOXD9JCYOIGOngJRSw52H1yBG/9CBoLVerbWu1lrXa63rwSH79EQ0/r2RjPIdSqnLwLWSK7XWLUHXJwlZCmCcUmq0UioPwBwAjwVcp6RFsdf1SwDrtdY/CLo+AKCUGmJ2tymlCgG8GzG89zI2ElgpdT+4qq4BvA3gk1rr3YFWyoNS6m0ADVrrwKVplVKPgHLc/5Lv0FoH2ptUSm0BkA/g4MlTr0WTWCjeKKWuAfBjAEMAHAawUmt9aUB1eQ+AuwFkA7hXa70giHq4KKUeBHAhKG+8F8A3tda/DLRSAJRS7wDwEoDV4HUOALcEuUNQKXU6gPvA3y8LwMNa6+/E7PMz1QEIgiBkOhk7BSQIgpDpiAMQBEHIUMQBCIIgZCjiAARBEDIUcQCCIAgZijgAQYgRSqm/KqUOK6USFlQoCANBHIAgxI47ANwQdCUEIVrEAQhCH1FKnXlSRLBAKVV8Uqf9VK31MwCOBl0/QYiWtNYCEoR4oLVeqpR6DMB3ARQCeCBW4lyCkEjEAQhC//gOqLXTCuCzAddFEPqFTAEJQv+oAlACoBRAQcB1EYR+IQ5AEPrHzwF8A5TGvj3gughCv5ApIEHoI0qpDwNo11r/9mTe3VeUUhcB+DaAiQBKlFIhAB/TWj8VZF0FoSdEDVQQBCFDkSkgQRCEDEUcgCAIQoYiDkAQBCFDEQcgCIKQoYgDEARByFDEAQiCIGQo4gAEQRAylP8PZSNLAWjgt34AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_trace_2d(f_2d, train_2d(momentum_2d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 297
    },
    "colab_type": "code",
    "id": "qylwkBDBl3_C",
    "outputId": "0d1d51e5-778c-412b-bbae-9b7e31ec5595"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 0.007188, x2 0.002553\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 0.6\n",
    "show_trace_2d(f_2d, train_2d(momentum_2d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 297
    },
    "colab_type": "code",
    "id": "fSZCrah6l3_K",
    "outputId": "2b006204-3c66-4d9c-c9f1-03ff12ed8483"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.589111, x2 0.698505\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta, gamma = 0.05, 0.9\n",
    "show_trace_2d(f_2d, train_2d(momentum_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "6WjZp2WPl3_T"
   },
   "source": [
    "# Nesterov accelerated gradient\n",
    "\n",
    "[Video timestamp](https://youtu.be/UvM0hK4E2dc?t=938)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "s02JrcZRl3_V"
   },
   "outputs": [],
   "source": [
    "eta, gamma = 0.05, 0.9\n",
    "\n",
    "def Nesterov_2d(x1, x2, v1, v2):\n",
    "    v1 = # your code\n",
    "    v2 = # your code\n",
    "    return x1 - v1, x2 - v2, v1, v2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 315
    },
    "colab_type": "code",
    "id": "upxkjOqIl3_b",
    "outputId": "e48007f6-069b-4ead-e4e8-fa06ccfc8d4e"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.751356, x2 0.071637\n",
      "epoch 20, x1 -0.589111, x2 0.698505\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_trace_2d(f_2d, train_2d(Nesterov_2d))\n",
    "show_trace_2d(f_2d, train_2d(momentum_2d), color= 'green')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "RyzF7aAXl3_h"
   },
   "source": [
    "# Adagrad\n",
    "\n",
    "[Video timestamp](https://youtu.be/UvM0hK4E2dc?t=1080)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "-Mk4sixgl3_i"
   },
   "outputs": [],
   "source": [
    "import math\n",
    "\n",
    "def adagrad_2d(x1, x2, s1, s2):\n",
    "    # The first two terms are the independent variable gradients\n",
    "    g1, g2, eps = 0.2 * x1, 4 * x2, 1e-6\n",
    "    #\n",
    "    # your code here (hint: use math.sqrt)\n",
    "    #\n",
    "    return x1, x2, s1, s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 297
    },
    "colab_type": "code",
    "id": "TVc4sPtFl3_o",
    "outputId": "e74c06ce-f86a-42c7-8822-9313ff5a07e1"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -2.382563, x2 -0.158591\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 0.4\n",
    "show_trace_2d(f_2d, train_2d(adagrad_2d))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 297
    },
    "colab_type": "code",
    "id": "XY90pzoLl3_v",
    "outputId": "4ac7254c-9ebb-4de2-f50e-02724cd5655b"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.002295, x2 -0.000000\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 2\n",
    "show_trace_2d(f_2d, train_2d(adagrad_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "RtU9tLiml3_2"
   },
   "source": [
    "# RMSProp\n",
    "\n",
    "[Video timestamp](https://youtu.be/UvM0hK4E2dc?t=1206)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "OBbRL5h3l3_3"
   },
   "outputs": [],
   "source": [
    "def rmsprop_2d(x1, x2, s1, s2):\n",
    "    g1, g2, eps = 0.2 * x1, 4 * x2, 1e-6\n",
    "    #\n",
    "    # your code here\n",
    "    #\n",
    "    return x1, x2, s1, s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 301
    },
    "colab_type": "code",
    "id": "nc3_6I-Ul3_9",
    "outputId": "03bdc363-bca6-4a91-eafa-281630282ecc"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.010599, x2 0.000000\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta, gamma = 0.4, 0.9\n",
    "show_trace_2d(f_2d, train_2d(rmsprop_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "BD9ILdGVl4AD"
   },
   "source": [
    "# Adam\n",
    "\n",
    "[Video timestamp](https://youtu.be/UvM0hK4E2dc?t=1331)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "vC3McRDZl4AF"
   },
   "outputs": [],
   "source": [
    "def adam_2d(x1, x2, s1, s2 , t):\n",
    "    beta1, beta2, eps = 0.9, 0.99, 1e-6\n",
    "    g1, g2 = 0.2 * x1, 4 * x2\n",
    "    #\n",
    "    # your code here\n",
    "    #\n",
    "    return x1, x2, s1, s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "rT5IwhY8l4AK"
   },
   "outputs": [],
   "source": [
    "def train_adam_2d(trainer):\n",
    "    \"\"\"Optimize the objective function of 2d variables with Adam-li trainer.\"\"\"\n",
    "    \"\"\"trainer(x1,x2,s_x1,s_x2) should return the updated positions x1, x2 and possible memory terms.\"\"\"\n",
    "    x1, x2 = -5, -2\n",
    "    s_x1, s_x2 = [0,0,0], [0,0,0]\n",
    "    res = [(x1, x2)]\n",
    "    for i in range(20):\n",
    "        x1, x2, s_x1, s_x2 = trainer(x1, x2, s_x1, s_x2, i)\n",
    "        res.append((x1, x2))\n",
    "    print('epoch %d, x1 %f, x2 %f' % (i+1, x1, x2))\n",
    "    return res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 301
    },
    "colab_type": "code",
    "id": "oeQbFML-l4AV",
    "outputId": "f176b4af-3840-41ca-e544-6e19bd596e5d"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 0.414218, x2 0.086138\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 0.8\n",
    "show_trace_2d(f_2d, train_adam_2d(adam_2d))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "DLmMd9h4l4Aa"
   },
   "source": [
    "# AMSGrad\n",
    "\n",
    "[Video timestamp](https://youtu.be/UvM0hK4E2dc?t=1479)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 0,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "Khhsvs3Dl4Ac"
   },
   "outputs": [],
   "source": [
    "def amsgrad_2d(x1, x2, s1, s2 , t):\n",
    "    beta1, beta2, eps = 0.9, 0.99, 1e-6\n",
    "    g1, g2 = 0.2 * x1, 4 * x2\n",
    "    #\n",
    "    # your code here\n",
    "    #\n",
    "    return x1, x2, s1, s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 315
    },
    "colab_type": "code",
    "id": "WmJEncF-l4Ag",
    "outputId": "b99469a0-f719-45e4-9d5e-fd11bcebf9df"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch 20, x1 -0.977985, x2 -0.470241\n",
      "epoch 20, x1 -0.571139, x2 0.487553\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "eta = 1\n",
    "show_trace_2d(f_2d, train_adam_2d(amsgrad_2d))\n",
    "show_trace_2d(f_2d, train_adam_2d(adam_2d), color ='green')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "mQQ1o7Yql4Al"
   },
   "source": [
    "[![Dataflowr](https://raw.githubusercontent.com/dataflowr/website/master/_assets/dataflowr_logo.png)](https://dataflowr.github.io/website/)"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "include_colab_link": true,
   "name": "Gradient_descent_optimization_algorithms_empty_colab.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
